package basics

import "fmt"

// ConstValue 常量
func ConstValue() {

	// Go语言自定义常量注意点
	// 定义的局部变量或者导入的包没有被使用, 那么编译器会报错,无法编译运行
	// 但是定义的常量没有被使用,编译器不会报错, 可以编译运行
	// 可以编译运行

	//const PI float32 = 3.14
	//PI = 110 // 报错
	//fmt.Println("PI = ", PI)
	const PI = 3.14
	//PI = 110 // 报错
	fmt.Println("PI = ", PI)

	// 一次性定义多个常量
	const num1, num2 int = 100, 200
	fmt.Println("num1 = ", num1)
	fmt.Println("num2 = ", num2)
	// 常量组方式
	const (
		num3 = 100
		num4 = 200
	)
	fmt.Println("num3 = ", num3)
	fmt.Println("num4 = ", num4)

	// 常量组+多重赋值
	const (
		num5, num6 = 100, 200
		num7       = 300
	)
	fmt.Println("num5 = ", num5)
	fmt.Println("num6 = ", num6)
	fmt.Println("num7 = ", num7)

	// 在常量组中, 如果上一行常量有初始值,但是下一行没有初始值, 那么下一行的值就是上一行的值
	const (
		num11 = 998
		num12 // 和上一行的值一样
		num13 = 666
		num14 // 和上一行的值一样
		num15 // 和上一行的值一样
	)
	fmt.Println("num11 = ", num11) // 998
	fmt.Println("num12 = ", num12) // 998
	fmt.Println("num13 = ", num13) // 666
	fmt.Println("num14 = ", num14) // 666
	fmt.Println("num15 = ", num15) // 666

	const (
		num21, num22 = 100, 200
		num23, num24 // 和上一行的值一样, 注意变量个数必须也和上一行一样
	)
	fmt.Println("num21 = ", num21)
	fmt.Println("num22 = ", num22)
	fmt.Println("num23 = ", num23)
	fmt.Println("num24 = ", num24)

}
